Function call translation is one aspect of translating a program from one programming language (called the “source language”) to another programming language (called the “target language”). In program translation, each function call in the source language program is translated into a function call in the target language.
One way to perform the translation is to include a header file at the head of a source language program by use of a preprocessor directive. For example, a header file included at the head of a C program file can be used by a translator to translate the program file from C to Java. If the header file contains information defining a one-to-one mapping between C-functions and Java-functions, when a C-function call in the source language program needs to be translated from C to Java, the translator uses the mapping information in the header file to generate the appropriate Java-function call. For example, the header file may contain a mapping from the C-function foo to the Java-function foo that indicates the correct calling sequence for the C-function to use when calling the Java-function. Then, if the source program file contains a call to the C-function foo, say “foo(3, &a)”, the translator will convert the call to “foo(3, a)”.
Another approach allows for a one-to-many correspondence between source language functions and target language functions. A call to one of the source language functions is translated by processing the source language function as it is called, deriving information about the source language function on the fly, and using the derived information to generate a target language call to the function. For example, if a source language program written in the MATLAB programming language (available as product model MATLAB 6 (Release 12) from The MathWorks, Inc.) contains multiple MATLAB-function calls to a function f2, each time a call to the function f2 needs to be translated from MATLAB to C, the translator processes the source language code for function f2 to derive all the information (e.g., the declared number of formal inputs and outputs to function f2, the scope of function f2, the use of certain language features, such as variable argument lists or the nargout function) needed to generate a C-function call to the function f2.